#include<iostream>
#include<vector>
#include<stack>
using namespace std;

class Solution {
public:
    int longestValidParentheses(string s) {
        stack<pair<char, int>> st;
        int len = s.size();
        for (int i = 0; i < len; i++) {
            if (!st.empty()) {
                if (s[i] == ')' && st.top().first == '(') {
                    st.pop();
                }
                else st.push({ s[i], i });
            }
            else st.push({ s[i], i });
        }
        vector<int> tmpV;
        tmpV.resize(len, 0);
        while (!st.empty()) {
            tmpV[st.top().second] = 1;
            st.pop();
        }
        for (auto e : tmpV) {
            cout << e << endl;
        }
        int maxZero = 0;
        for (int i = 0; i < len; i++) {
            int tmpmax = 0;
            while (i < len && tmpV[i] == 0) {
                tmpmax++;
                i++;
            }
            maxZero = max(maxZero, tmpmax);
        }
        return maxZero;
    }
};